/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package tv.global.util;

import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import tv.global.modelo.Moneda;
import tv.global.rn.MonedaRN;
import tv.inventario.modelo.Marca;
import tv.inventario.modelo.RubroPK;
import tv.inventario.modelo.SubTipo;
import tv.inventario.modelo.TipoProducto;
import tv.inventario.rn.MarcaRN;
import tv.inventario.rn.SubTipoRN;
import tv.inventario.rn.TipoProductoRN;
import tv.pool.modelo.CondicionesPagoPool;
import tv.pool.modelo.CondicionesPagoPoolPK;
import tv.pool.rn.CondicionesPagoPoolRN;

/**
 *
 * @author ctrosch
 */
@ManagedBean (name="conversorBean")
@SessionScoped
public class ConversoresBean {

     @EJB private TipoProductoRN tipoProductoRN;
     @EJB private MarcaRN marcaRN;
     @EJB private SubTipoRN subTipoRN;
     @EJB private MonedaRN monedaRN;


     @EJB private CondicionesPagoPoolRN condicionesPagoPollRN;

    // CONVERTERS
    public Converter getConversorMarcaProducto() {

        return new Converter() {

            @Override
            public Object getAsObject(FacesContext context, UIComponent component, String value) {
                if (value.trim().equals("") || value == null) {
                    return null;
                }
                
                String a[] = value.split(",");                                
                String tippro[] = a[0].split("=");
                String prefix[] = a[1].split("=");
                String nrorub[] = a[2].split("=");
                String valrub[] = a[3].split("=");
                RubroPK id = new RubroPK(tippro[1], prefix[1] , Integer.parseInt(nrorub[1]), valrub[1]);

                Marca m = marcaRN.getMarca(id);
                System.out.println("Marca encontrada:" + m.getDescrp());
                return m;
            }

            @Override
            public String getAsString(FacesContext context, UIComponent component, Object value) {
                if (value == null || value.equals("")) {
                    return "";
                } else {
                    return ((Marca) value).getId() + "";
                }
            }
        };
    }

    // CONVERTERS
    public Converter getConversorSubTipoProducto() {

        return new Converter() {

            @Override
            public Object getAsObject(FacesContext context, UIComponent component, String value) {
                if (value.trim().equals("") || value == null) {
                    return null;
                }
                
                String a[] = value.split(",");
                String tippro[] = a[0].split("=");
                String prefix[] = a[1].split("=");
                String nrorub[] = a[2].split("=");
                String valrub[] = a[3].split("=");
                RubroPK id = new RubroPK(tippro[1], prefix[1], Integer.parseInt(nrorub[1]), valrub[1]);

                SubTipo s = subTipoRN.getSubTipo(id);
                //System.out.println("Subtipo encontrado:" + s.getDescrp());
                return s;
            }

            @Override
            public String getAsString(FacesContext context, UIComponent component, Object value) {
                if (value == null || value.equals("")) {
                    return "";
                } else {
                    return ((SubTipo) value).getId() + "";
                }
            }
        };
    }

    // CONVERTERS
    public Converter getConversorTipoProducto() {

        return new Converter() {

            @Override
            public Object getAsObject(FacesContext context, UIComponent component, String value) {
                if (value.trim().equals("") || value == null) {
                    return null;
                }       
                TipoProducto t = tipoProductoRN.getTipoProducto(value);
                return t;
            }

            @Override
            public String getAsString(FacesContext context, UIComponent component, Object value) {
                if (value == null || value.equals("")) {
                    return "";
                } else {
                    return ((TipoProducto) value).getTippro() + "";
                }
            }
        };
    }

    public Converter getConversorMoneda() {

        return new Converter() {

            @Override
            public Object getAsObject(FacesContext context, UIComponent component, String value) {
                if (value.trim().equals("") || value == null) {
                    return null;
                }                
                Moneda m = monedaRN.getMoneda(value);
                m.setCotizacion(monedaRN.getCotizacionDia(value));
                return m;
            }

            @Override
            public String getAsString(FacesContext context, UIComponent component, Object value) {
                if (value == null || value.equals("")) {
                    return "";
                } else {
                    return ((Moneda) value).getCodcof() + "";
                }
            }
        };
    }

    public Converter getConversorCondicionPagoPool() {

        return new Converter() {

            @Override
            public Object getAsObject(FacesContext context, UIComponent component, String value) {
                if (value.trim().equals("") || value == null) {
                    return null;
                }

                String a[] = value.split(",");
                String nropool[] = a[0].split("=");
                String orden[]   = a[1].split("=");

                CondicionesPagoPoolPK idPK = new CondicionesPagoPoolPK();
                idPK.setNroPool(Integer.parseInt(nropool[1]));
                idPK.setOrden(Integer.parseInt(orden[1]));

                return condicionesPagoPollRN.getCondicionesPagoPool(idPK);


            }

            @Override
            public String getAsString(FacesContext context, UIComponent component, Object value) {
                if (value == null || value.equals("")) {
                    return "";
                } else {
                    return ((CondicionesPagoPool) value).toString() + "";
                }
            }
        };
    }

    




}
